class Solution:
    def lengthOfLongestSubstring(self, s):
        """
        :type s: str
        :rtype: int
        """
        st = {}
        i, ans = 0, 0
        for j in range(len(s)): # 遍历所有字符
            if s[j] in st:
                # i 为集合中已存在的字符 在原字符串中的位置
                i = max(st[s[j]], i) # 遇见重复字符时记录上一次出现的位置
            ans = max(ans, j - i + 1) # j - i + 1 为重复字符第一次出现到第二次出现的距离
                                      # max(ans, j - i + 1) 是取最大间隔
            st[s[j]] = j + 1  # 字符s[j]在原字符串中的位置+1
            print(j-i+1)
        return ans


str01 = "bcabacdd"
s = Solution()
print(s.lengthOfLongestSubstring(str01))



